ProdutosIntegraçõesRecursosDocumentaçãoPreços
Começar agora

© 2026 CapSolver. All rights reserved.

Contacte-nos

Slack: lola@capsolver.com

Produtos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensão de Navegador
  • Mais tipos de CAPTCHA

Integrações

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Parceiros
  • Ver todas as integrações

Recursos

  • Programa de Referenciação
  • Documentação
  • Referência da API
  • Blog
  • FAQ
  • Glossário
  • Estado

Legal

  • Termos de Serviço
  • Política de Privacidade
  • Política de Reembolso
  • Não vender os meus dados pessoais
Blog/web scraping/Web Scraping em Golang com Colly
Jul04, 2024

Web Scraping em Golang com Colly

Adélia Cruz

Adélia Cruz

Neural Network Developer

Web scraping é um método usado para extrair dados de sites. No Golang, a biblioteca Colly é uma ferramenta popular para web scraping devido à sua simplicidade e recursos poderosos. Este guia o levará por meio da configuração de um projeto Golang com o Colly, construção de um raspador básico, tratamento de cenários complexos de extração de dados e otimização dos seus raspadores com requisições concorrentes.

Configurando Seu Projeto em Golang

Antes de começar, certifique-se de que o Go está instalado no seu sistema. Inicialize seu projeto e obtenha o pacote Colly com os seguintes comandos:

bash Copy
go mod init my_scraper
go get -u github.com/gocolly/colly

Isso configura o diretório do seu projeto e instala o pacote Colly.

Resgatar Seu Código de Bônus do CapSolver

Aumente seu orçamento de automação instantaneamente!
Use o código de bônus CAPN ao recarregar sua conta do CapSolver para obter um bônus extra de 5% em cada recarga — sem limites.
Resgatar agora no seu Painel do CapSolver
.

Construindo um Raspador Básico

Vamos criar um raspador básico para extrair todos os links de uma página específica do Wikipedia.

  1. Crie um novo arquivo main.go e adicione o seguinte código:
go Copy
package main

import (
    "fmt"
    "github.com/gocolly/colly"
)

func main() {
    c := colly.NewCollector(
        colly.AllowedDomains("en.wikipedia.org"),
    )

    c.OnHTML(".mw-parser-output", func(e *colly.HTMLElement) {
        links := e.ChildAttrs("a", "href")
        fmt.Println(links)
    })

    c.Visit("https://en.wikipedia.org/wiki/Web_scraping")
}

Este código inicializa um novo coletor do Colly restrito a en.wikipedia.org, em seguida, configura um callback para encontrar e imprimir todos os links dentro do div .mw-parser-output da página.

Raspagem de Dados de Tabela

Para tarefas mais complexas, como raspagem de dados de tabela e gravação em um arquivo CSV, você pode usar o pacote encoding/csv no Go:

  1. Estenda o main.go com o seguinte código para raspar dados de tabela:
go Copy
package main

import (
    "encoding/csv"
    "log"
    "os"
    "github.com/gocolly/colly"
)

func main() {
    fName := "data.csv"
    file, err := os.Create(fName)
    if err != nil {
        log.Fatalf("Não foi possível criar o arquivo, err: %q", err)
        return
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    c := colly.NewCollector()

    c.OnHTML("table.wikitable", func(e *colly.HTMLElement) {
        e.ForEach("tr", func(_ int, row *colly.HTMLElement) {
            rowData := []string{}
            row.ForEach("td", func(_ int, cell *colly.HTMLElement) {
                rowData = append(rowData, cell.Text)
            })
            writer.Write(rowData)
        })
    })

    c.Visit("https://en.wikipedia.org/wiki/List_of_programming_languages")
}

Este script raspa dados de tabela de uma página do Wikipedia e os escreve no data.csv.

Fazendo Requisições Concorrentes

Para acelerar a raspagem, você pode fazer requisições concorrentes usando goroutines do Go. Aqui está como você pode raspar múltiplas páginas concorrentemente:

go Copy
package main

import (
    "fmt"
    "github.com/gocolly/colly"
    "sync"
)

func scrape(url string, wg *sync.WaitGroup) {
    defer wg.Done()
    
    c := colly.NewCollector()
    
    c.OnHTML("title", func(e *colly.HTMLElement) {
        fmt.Println("Título encontrado:", e.Text)
    })
    
    c.Visit(url)
}

func main() {
    var wg sync.WaitGroup
    urls := []string{
        "https://en.wikipedia.org/wiki/Web_scraping",
        "https://en.wikipedia.org/wiki/Data_mining",
        "https://en.wikipedia.org/wiki/Screen_scraping",
    }

    for _, url := range urls {
        wg.Add(1)
        go scrape(url, &wg)
    }

    wg.Wait()
}

Neste exemplo, definimos uma função scrape que recebe uma URL e um grupo de espera como argumentos. A função inicializa um coletor do Colly, configura um callback para imprimir o título da página e visita a URL. A função main cria um grupo de espera, itera sobre uma lista de URLs e inicia uma goroutine para cada URL para raspar concorrentemente.

Ao seguir estes passos, você pode construir raspadores robustos em Golang usando o Colly, lidar com diversos cenários de raspagem e otimizar o desempenho com requisições concorrentes. Para tutoriais mais detalhados e uso avançado, consulte recursos sobre raspagem de web com Go e Colly.

Outras Bibliotecas para Raspagem de Web em Go

Além do Colly, existem várias outras excelentes bibliotecas para raspagem de web no Golang:

  • GoQuery: Esta biblioteca oferece uma sintaxe e um conjunto de recursos semelhantes ao jQuery, permitindo que você execute operações de raspagem de web com facilidade, da mesma forma que faria com o jQuery.
  • Ferret: Um sistema de raspagem de web portátil, extensível e rápido projetado para simplificar a extração de dados da web. O Ferret se concentra na extração de dados usando uma linguagem declarativa única.
  • Selenium: Conhecido por suas capacidades de navegador sem interface gráfica, o Selenium é ideal para raspar conteúdo dinâmico. Embora não tenha suporte oficial para Go, existe uma versão portada que permite seu uso em projetos Go.

Conclusão

A raspagem de web é uma habilidade poderosa e essencial para extrair dados de sites de forma eficiente. Usando o Golang e a biblioteca Colly, você pode construir raspadores robustos que lidam com diversos cenários de extração de dados, desde a coleta de links simples até a extração de dados de tabelas complexas e otimizar o desempenho com requisições concorrentes.

Neste guia, você aprendeu como:

  1. Configurar um projeto Golang com a biblioteca Colly.
  2. Construir um raspador básico para extrair links de uma página da web.
  3. Lidar com extração de dados mais complexos, como raspar dados de tabelas e salvá-los em um arquivo CSV.
  4. Otimizar seus raspadores fazendo requisições concorrentes.

Ao seguir estes passos, você pode criar raspadores de web eficazes e eficientes no Golang, aproveitando a simplicidade e os recursos poderosos do Colly. Para uso avançado e tutoriais detalhados, explore recursos adicionais sobre raspagem de web com Go e Colly.

Perguntas Frequentes

1. O Colly é adequado para iniciantes que estão aprendendo raspagem de web no Golang?

Sim. O Colly foi projetado para ser simples e amigável para iniciantes, oferecendo recursos poderosos como parsing de DOM, tratamento de requisições, callbacks e concorrência. Mesmo desenvolvedores novos em Go podem rapidamente construir um raspador funcional com apenas algumas linhas de código.


2. O Colly pode raspar conteúdo estruturado, como tabelas ou listas?

Absolutamente. O Colly permite a seleção de nós e atributos específicos do HTML, o que torna fácil extrair tabelas, listas, links e outros elementos estruturados. Você também pode armazenar os resultados diretamente em arquivos como CSV ou JSON usando as bibliotecas padrão do Go.


3. Como posso acelerar meu raspador web do Colly?

Você pode usar as goroutines do Go para processar múltiplas páginas em paralelo. Ao lançar raspadores concorrentemente e sincronizá-los com um grupo de espera, o desempenho da raspagem aumenta significativamente — especialmente para conjuntos de dados grandes ou tarefas de varredura de múltiplas URLs.

Ver mais

web scrapingApr 22, 2026

Arquitetura de Web Scraping em Rust para Extração de Dados Escalável

Aprenda arquitetura de raspagem web escalável em Rust com reqwest, scraper, raspagem assíncrona, raspagem de navegador headless, rotação de proxies e tratamento de CAPTCHA compatível.

Adélia Cruz
Adélia Cruz
web scrapingApr 08, 2026

Selenium vs Puppeteer para Resolução de CAPTCHA: Comparação de Desempenho e Caso de Uso

Compare o Selenium vs Puppeteer para resolver CAPTCHA. Descubra benchmarks de desempenho, notas de estabilidade e como integrar o CapSolver para o máximo de sucesso.

Índice

Ethan Collins
Ethan Collins
web scrapingFeb 10, 2026

Dados como Serviço (DaaS): O que é e por que importa em 2026

Entenda Dados como Serviço (DaaS) em 2026. Descubra seus benefícios, casos de uso e como transforma os negócios com visões em tempo real e escalabilidade.

Ethan Collins
Ethan Collins
web scrapingFeb 05, 2026

Como corrigir erros comuns de raspagem da web em 2026

Dominar a correção de diversos erros de raspagem de web, como 400, 401, 402, 403, 429, 5xx e 1001 do Cloudflare em 2026. Aprenda estratégias avançadas para rotação de IPs, cabeçalhos e limitação de taxa adaptativa com o CapSolver.

Rajinder Singh
Rajinder Singh